home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / ABERMUD.ZIP / PARSE.C < prev    next >
C/C++ Source or Header  |  1989-07-08  |  38KB  |  1,693 lines

  1. #include "files.h"
  2.  
  3.  /*
  4.  
  5.  globme holds global me data
  6.  
  7.  */
  8. #define  OBMUL 8
  9. #include <stdio.h>
  10.  
  11. extern char * oname();
  12. extern char * pname();
  13. extern FILE *openlock(); 
  14.  
  15.  /*
  16.  
  17.  Objects held in format
  18.  
  19.  [Short Text]
  20.  [4 Long texts]
  21.  [Max State]
  22.  
  23.  */
  24.  
  25.  /*
  26.  
  27.  Objects in text file in form
  28.  
  29.  Stam:state:loc:flag
  30.  
  31.  */
  32.  
  33. long debug_mode=0;
  34.  
  35. void sendsys(to,from,codeword,chan,text)
  36. char *to,*from;
  37. long codeword,chan;
  38. char *text;
  39.     {
  40.     long  block[128];
  41.     long *i;
  42.     i=(long *)text;
  43.     block[1]=codeword;
  44.     block[0]=chan;
  45.     sprintf((char *)(block+2),"%s%s%s%s",to,".",from,".");
  46.     if((codeword!= -9900)&&(codeword!= -10021)) strcpy((char *)(block+64),text);
  47.     else
  48.        {
  49.            
  50.        block[64]=i[0];
  51.        block[65]=i[1];
  52.        block[66]=i[2];
  53.        }
  54.     send2(block);
  55.     }
  56.  
  57. char  strbuf[128];
  58. char  wordbuf[128]="";
  59. char  wd_it[64]="";
  60. char  wd_him[16]="";
  61. char  wd_her[16]="";
  62. char  wd_them[16]="";
  63. char  wd_there[128]="";
  64. long  stp;
  65.  
  66. void pncom()
  67. {
  68.     extern long my_lev;
  69.     extern char globme[];
  70.     bprintf("Current pronouns are:\n");
  71.     bprintf("Me              : %s\n",globme);
  72.     bprintf("Myself          : %s\n",globme);    
  73.     bprintf("It              : %s\n",wd_it);
  74.     bprintf("Him             : %s\n",wd_him);
  75.     bprintf("Her             : %s\n",wd_her);
  76.     bprintf("Them            : %s\n",wd_them);
  77.     if(my_lev>9)
  78.     {
  79.         bprintf("There           : %s\n",wd_there);
  80.     }
  81. }
  82.  
  83. int gamecom(str)
  84. char *str;
  85.     {
  86.     long  a;
  87.     extern long in_fight;
  88.     extern long stp;
  89.     extern char strbuf[];
  90.     if(strcmp(str,"!")) strcpy(strbuf,str);
  91.     if(!strcmp(str,".q")) strcpy(str,"");  /* Otherwise drops out after command */
  92.     stp=0;
  93.     if(!strlen(str)) return(0);
  94.     if(!strcmp(str,"!")) strcpy(str,strbuf);
  95.     if(brkword()== -1)
  96.        {
  97.        bprintf("Pardon ?\n");
  98.        return(-1);
  99.        }
  100.     if((a=chkverb())== -1)
  101.        {
  102.        bprintf("I don't know that verb\n");
  103.        return(-1);
  104.        }
  105.     doaction(a);
  106.     return(0);
  107.     }
  108.  
  109. int brkword()
  110.     {
  111.     extern char wd_it[],wd_them[],wd_her[],wd_him[],globme[];
  112.     extern long stp;
  113.     extern char strbuf[],wordbuf[];
  114.     int  worp;
  115.     x1:worp=0;
  116.     while(strbuf[stp]==' ') stp++;
  117.     while((strbuf[stp])&&(strbuf[stp]!=' '))
  118.        {
  119.        wordbuf[worp++]=strbuf[stp++]; 
  120.        }
  121.     wordbuf[worp]=0;
  122.     lowercase(wordbuf);
  123.     if(!strcmp(wordbuf,"it"))strcpy(wordbuf,wd_it);
  124.     if(!strcmp(wordbuf,"them"))strcpy(wordbuf,wd_them);
  125.     if(!strcmp(wordbuf,"him"))strcpy(wordbuf,wd_him);
  126.     if(!strcmp(wordbuf,"her"))strcpy(wordbuf,wd_her);
  127.     if(!strcmp(wordbuf,"me")) strcpy(wordbuf,globme);
  128.     if(!strcmp(wordbuf,"myself")) strcpy(wordbuf,globme);
  129.     if(!strcmp(wordbuf,"there")) strcpy(wordbuf,wd_there);
  130.     if(worp)return(0);
  131.     else
  132.        return(-1);
  133.     }
  134.  
  135.  
  136. chklist(word,lista,listb)
  137. char *word;
  138. char *lista[];
  139. int listb[];
  140.     {
  141.     long  a,b,c,d;
  142.     a=0;
  143.     b=0;
  144.     c=0;
  145.     d= -1;
  146.     lowercase(word);
  147.     while(lista[a])
  148.        {
  149.        b=Match(word,lista[a]);
  150.        if (b>c) { c=b; d=listb[a]; }
  151.        a++;
  152.        }
  153.     if(c<5) return(-1); /* No good matches */
  154.     return(d);
  155.     }
  156.  
  157. int Match(x,y)
  158. char *x,*y;
  159.     {
  160.     long  c,n;
  161.     c=0; n=0;
  162.     if (!strcmp(x,y)) return(10000);
  163.     if(!strcmp(y,"reset")) return(-1);
  164.     if (*x==0) return(0);
  165.     while((x[n]!=0)&&(y[n]!=0))
  166.        {
  167.        if (x[n]==y[n])
  168.           {
  169.           if(n==0) c+=2;
  170.           if(n==1) c++;
  171.           c++;
  172.           }
  173.        n++;
  174.        }
  175.     return(c);
  176.     }
  177.     
  178.  chkverb()
  179.     {
  180.     extern char wordbuf[],*verbtxt[];
  181.     extern int verbnum[];
  182.     return(chklist(wordbuf,verbtxt,verbnum));
  183.     }
  184.  
  185. char *verbtxt[]={"go","climb","n","e","s","w","u","d",
  186.     "north","east","south","west","up","down",
  187.     "quit",
  188.     "get","take","drop","look","i","inv","inventory","who",
  189.     "reset","zap","eat","drink","play",
  190.     "shout","say","tell","save","score"
  191.     ,"exorcise","give","steal","pinch","levels","help","value"
  192.     ,"stats","examine","read","delete","pass","password",
  193.     "summon","weapon","shoot","kill","hit","fire","launch","smash","break",
  194.     "laugh","cry","burp","fart","hiccup","grin","smile","wink","snigger"
  195.     ,"pose","set","pray","storm","rain","sun","snow","goto",
  196.     "wear","remove","put","wave","blizzard","open","close",
  197.     "shut","lock","unlock","force","light","extinguish","where","turn",
  198.     "invisible","visible","pull","press","push","cripple","cure","dumb",
  199.     "change","missile","shock","fireball","translocate","blow",
  200.     "sigh","kiss","hug","slap","tickle","scream","bounce","wiz"
  201.     ,"stare","exits","crash","sing","grope","spray"
  202.     ,"groan","moan","directory","yawn","wizlist","in","smoke"
  203.     ,"deafen","resurrect","log","tss","rmedit","loc","squeeze","users"
  204.     ,"honeyboard","inumber","update","become","systat","converse",
  205.     "snoop","shell","raw","purr","cuddle","sulk","roll","credits"
  206.     ,"brief","debug","jump","wield","map","flee","bug","typo","pn",
  207.     "emote","dig","empty",
  208.      0 };
  209.  
  210. long verbnum[]={1,1,2,3,4,5,6,7,2,3,4,5,6,7,8,9,9,10,11,12,12,12,13,14
  211.     ,35,35,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66
  212.     ,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133
  213.     ,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149
  214.     ,187,188,189};
  215.  
  216.  
  217. long exitnum[]={1,2,3,4,5,6,1,2,3,4,5,6};
  218.  
  219.  doaction(n)
  220.     {
  221.     char xx[128];
  222.     extern long my_sco;
  223.     extern long curmode;
  224.     extern long curch;
  225.     extern long debug_mode;
  226.     extern char globme[];
  227.     extern long isforce;
  228.     extern long in_fight;
  229.     extern long brmode;
  230.     long  brhold;
  231.     extern long mynum;
  232.     openworld();
  233.     if((n>1)&&(n<8)){dodirn(n);return;}
  234.     switch(n)
  235.        {
  236.        case 1:
  237.           dogocom();
  238.           break;
  239.        case 139:
  240. if(in_fight) 
  241. {
  242. bprintf("Not in a fight!\n");break;
  243. }
  244.           gropecom();break;
  245.        case 8:
  246.           if(isforce) {bprintf("You can't be forced to do that\n");break;}
  247.           rte(globme);
  248.           openworld();
  249. if(in_fight)
  250. {
  251. bprintf("Not in the middle of a fight!\n");
  252. break;
  253. }
  254.           sprintf(xx,"%s has left the game\n",globme);
  255.           bprintf("Ok");
  256.           sendsys(globme,globme,-10000,curch,xx);
  257.           sprintf(xx,"[ Quitting Game : %s ]\n",globme);
  258.           sendsys(globme,globme,-10113,0,xx);
  259.           dumpitems();
  260.           setpstr(mynum,-1);
  261.                     pname(mynum)[0]=0;
  262.                     closeworld();
  263.           curmode=0;curch=0;
  264.           saveme();
  265.           crapup("Goodbye");
  266.           break;
  267.        case 9:
  268.           getobj();break;
  269.        case 137:
  270.           crashcom();break;
  271.        case 10:
  272.           dropitem();break;
  273.        case 11:look_cmd();break;
  274.        case 12:
  275.           inventory();break;
  276.        case 13:
  277.           whocom();break;
  278.        case 14:
  279.           rescom();break;
  280.        case 15:
  281.           lightning();
  282.           break;
  283.        case 16:
  284.           eatcom();
  285.           break;
  286.        case 17:
  287.           playcom();
  288.           break;
  289.        case 18:
  290.           shoutcom();break;
  291.        case 19:
  292.           saycom();break;
  293.        case 20:
  294.           tellcom();break;
  295.        case 21:
  296.           saveme();break;
  297.        case 22:
  298.           scorecom();break;
  299.        case 23:
  300.           exorcom();break;
  301.        case 24:
  302.           givecom();break;
  303.        case 25:
  304.           stealcom();break;
  305.        case 26:
  306.           levcom();break;
  307.        case 27:
  308.           helpcom();break;
  309.        case 28:
  310.           valuecom();break;
  311.        case 29:
  312.           stacom();break;
  313.        case 30:
  314.           examcom();break;
  315.        case 31:
  316.           delcom();break;
  317.        case 32:
  318.           passcom();break;
  319.        case 33:
  320.           sumcom();break;
  321.        case 34:
  322.           weapcom();break;
  323.        case 35:
  324.           killcom();break;
  325.        case 50:
  326.           laughcom();break;
  327.        case 51:
  328.           crycom();break;
  329.        case 52:
  330.           burpcom();break;
  331.        case 53:
  332.           fartcom();break;
  333.        case 54:
  334.           hiccupcom();break;
  335.        case 55:
  336.           grincom();break;
  337.        case 56:
  338.           smilecom();break;
  339.        case 57:
  340.           winkcom();break;
  341.        case 58:
  342.           sniggercom();break;
  343.        case 59:
  344.           posecom();break;
  345.        case 60:
  346.           setcom();break;
  347.        case 61:
  348.           praycom();break;
  349.        case 62:
  350.           stormcom();break;
  351.        case 63:
  352.           raincom();break;
  353.        case 64:
  354.           suncom();break;
  355.        case 65:
  356.           snowcom();break;
  357.        case 66:
  358.           goloccom();
  359.           break;
  360.        case 100:
  361.           wearcom();break;
  362.        case 101:
  363.           removecom();break;
  364.        case 102:
  365.           putcom();break;
  366.        case 103:
  367.           wavecom();break;
  368.        case 104:
  369.           blizzardcom();break;
  370.        case 105:
  371.           opencom();break;
  372.        case 106:
  373.           closecom();break;
  374.        case 107:
  375.           lockcom();break;
  376.        case 108:
  377.           unlockcom();break;
  378.        case 109:
  379.           forcecom();break;
  380.        case 110:
  381.           lightcom();break;
  382.        case 111:
  383.           extinguishcom();break;
  384.        case 118:
  385.           cripplecom();break;
  386.        case 119:
  387.           curecom();break;
  388.        case 120:
  389.           dumbcom();break;
  390.        case 121:
  391.           changecom();break;
  392.        case 122:
  393.           missilecom();break;
  394.        case 123:
  395.           shockcom();break;
  396.        case 124:
  397.           fireballcom();break;
  398.        case 126:
  399.           blowcom();break;
  400.        case 127:
  401.           sighcom();break;
  402.        case 128:
  403.           kisscom();break;
  404.        case 129:
  405.           hugcom();break;
  406.        case 130:
  407.           slapcom();break;
  408.        case 131:
  409.           ticklecom();break;
  410.        case 132:
  411.           screamcom();break;
  412.        case 133:
  413.           bouncecom();break;
  414.        case 134:
  415.           wizcom();break;
  416.        case 135:
  417.           starecom();break;
  418.        case 136:
  419.           exits();break;
  420.        case 138:
  421.           singcom();break;
  422.        case 140:
  423.           spraycom();break;
  424.        case 141:
  425.           groancom();break;
  426.        case 142:
  427.           moancom();break;
  428.        case 143:
  429.           dircom();break;
  430.        case 144:
  431.           yawncom();break;
  432.        case 117:;
  433.        case 113:
  434.           pushcom();break;
  435.        case 145:
  436.           wizlist();break;
  437.        case 146:
  438.           incom();break;
  439.        case 147:
  440.           lightcom();break;
  441.        case 114:
  442.           inviscom();break;
  443.        case 115:
  444.           viscom();break;
  445.        case 148:
  446.           deafcom();break;
  447.        case 149:
  448.           ressurcom();break;
  449.        case 150:
  450.           logcom();break;
  451.        case 151:
  452.           tsscom();break;
  453.        case 152:
  454.           rmeditcom();break;
  455.        case 154:
  456.           squeezecom();break;
  457.        case 153:
  458.           loccom();break;
  459.        case 155:
  460.           usercom();break;
  461.        case 156:
  462.           u_system();break;
  463.        case 157:
  464.           inumcom();break;
  465.        case 158:
  466.           updcom();break;
  467.        case 159:
  468.           becom();break;
  469.        case 160:
  470.           systat();break;
  471.        case 161:
  472.           convcom();break;
  473.        case 162:
  474.           snoopcom();break;
  475.        case 163:
  476.           shellcom();break;
  477.        case 164:
  478.           rawcom();break;
  479.        case 165:
  480.           purrcom();break;
  481.        case 166:
  482.           cuddlecom();break;
  483.        case 167:
  484.           sulkcom();break;
  485.        case 168:
  486.           rollcom();break;
  487.        case 169:
  488.           bprintf("\001f%s\001",CREDITS);break;
  489.        case 170:
  490.           brmode=!brmode;
  491.           break;
  492.        case 171:
  493.           debugcom();break;
  494.        case 172:
  495.           jumpcom();break;
  496.        case 112:
  497.           wherecom();break;
  498.        case 173:
  499.           bprintf("mapping kit, is, sadly, out of order.\n");break;
  500. case 174:if(!in_fight)
  501. {
  502. dogocom();break;
  503. }
  504. else
  505. {
  506. char ar[120];
  507. if(iscarrby(32,mynum)) 
  508. {
  509.     bprintf("The sword won't let you!!!!\n");
  510.     break;
  511. }
  512. sprintf(ar,"\001c%s\001 drops everything in a frantic attempt to escape\n",globme);
  513. sendsys(globme,globme,-10000,curch,ar);
  514. sendsys(globme,globme,-20000,curch,"");
  515. my_sco-=my_sco/33; /* loose 3% */
  516. calibme();
  517. in_fight=0;
  518. on_flee_event();
  519. dogocom();break;
  520. case 175:bugcom();break;
  521. case 176:typocom();break;
  522. case 177:pncom();break;
  523. case 178:blindcom();break;
  524. case 179:edit_world();break;
  525. case 180:if(ptstflg(mynum,4)) debug_mode=1-debug_mode;
  526. break;
  527. case 181:setpflags();break;
  528. case 182:frobnicate();break;
  529. case 183:setincom();break;
  530. case 184:setoutcom();break;
  531. case 185:setmincom();break;
  532. case 186:setmoutcom();break;
  533. case 187:emotecom();break;
  534. case 188:digcom();break;
  535. case 189:emptycom();break;
  536. }
  537.        default:
  538.           if(my_lev>9999)bprintf("Sorry not written yet[COMREF %d]\n",n);
  539.           else bprintf("I don't know that verb.\n");
  540.           break;
  541.           }
  542.     }
  543.  
  544.  
  545. char in_ms[81]="has arrived.";
  546. char out_ms[81]="";
  547. char mout_ms[81]="vanishes in a puff of smoke.";
  548. char min_ms[81]="appears with an ear-splitting bang.";
  549. char here_ms[81]="is here";
  550.  
  551. dogocom(n)
  552.     {
  553.     extern char *exittxt[];
  554.     extern long exitnum[];
  555.     extern char wordbuf[];
  556.     long  a;
  557.     if(brkword()== -1)
  558.        {
  559.        bprintf("GO where ?\n");
  560.        return(-1);
  561.        }
  562. if(!strcmp(wordbuf,"rope")) strcpy(wordbuf,"up");
  563.     a=chklist(wordbuf,exittxt,exitnum);
  564.     if(a== -1)
  565.        {
  566.        bprintf("Thats not a valid direction\n");
  567.        return(-1);
  568.        }
  569.     return(dodirn(a+1));
  570.     }
  571.  
  572.  dodirn(n)
  573.     {
  574.     extern long curch;
  575.     extern long mynum;
  576.     extern char globme[];
  577.     extern long ex_dat[];
  578.     extern long ail_blind;
  579.     extern char in_ms[],out_ms[];
  580.     char block[256],x[32];
  581.     long  newch,fl,i;
  582.     extern long in_fight;
  583. if(in_fight>0)
  584. {
  585. bprintf("You can't just stroll out of a fight!\n");
  586. bprintf("If you wish to leave a fight, you must FLEE in a direction\n");
  587. return;
  588. }
  589. if((iscarrby(32,mynum))&&(ploc(25)==curch)&&(!!strlen(pname(25))) )
  590. {
  591. bprintf("\001cThe Golem\001 bars the doorway!\n");
  592. return;
  593. }
  594.     n-=2;
  595.         if(chkcrip()) return;
  596.     newch=ex_dat[n];
  597.     if((newch>999)&&(newch<2000))
  598.        {
  599.        auto long  drnum,droff;
  600.        drnum=newch-1000;
  601.        droff=drnum^1;/* other door side */
  602.        if(state(drnum)!=0)
  603.           {
  604. extern long objects;
  605. {
  606. bprintf("You can't go that way\n");
  607. /* Invis doors */
  608. }
  609. else
  610.           bprintf("The door is not open\n");
  611.           return;
  612.           }
  613.        newch=oloc(droff);
  614.        }
  615.     if(newch==-139)
  616.     {
  617.         if((!iswornby(113,mynum))&&(!(iswornby(114,mynum)))&&(!iswornby(89,mynum)))
  618.        {
  619.             bprintf("The intense heat drives you back\n");
  620.             return;
  621.         }
  622.         else
  623.         bprintf("The shield protects you from the worst of the lava stream's heat\n");
  624.      }
  625.     if(n==2)
  626.     {
  627.          i=fpbns("figure");
  628.          {
  629.              bprintf("\001pThe Figure\001 holds you back\n");
  630.         bprintf("\001pThe Figure\001 says 'Only true sorcerors may pass'\n");
  631.         return;
  632.     }
  633. }
  634.     if(newch>=0)bprintf("You can't go that way\n");
  635.     else
  636.        {
  637.        sendsys(globme,globme,-10000,curch,block);
  638.        curch=newch;
  639.   sprintf(block,"%s%s%s%s %s%s","\001s",globme,"\001",globme,in_ms,"\n\001");
  640.        sendsys(globme,globme,-10000,newch,block);
  641.        trapch(curch);
  642.        }
  643.     }
  644.  
  645.  
  646.  
  647.  
  648. long tdes=0;
  649. long vdes=0;
  650. long rdes=0;
  651. long ades=0;
  652. long zapped;
  653.  
  654.  gamrcv(blok)
  655.  long *blok;
  656.     {
  657.     extern long zapped;
  658.     extern long vdes,tdes,rdes,ades;
  659.     extern char globme[];
  660.     auto long  zb[32];
  661.     long *i;
  662.     extern long curch;
  663.     extern long my_lev;
  664.     extern long my_sco;
  665.     extern long my_str;
  666.     extern long snoopd;
  667.     extern long fl_com;
  668.     char ms[128];
  669.     char nam1[40],nam2[40],text[256],nameme[40];
  670.     long isme;
  671.     extern long fighting,in_fight;
  672.     strcpy(nameme,globme);
  673.     lowercase(nameme);
  674.     isme=split(blok,nam1,nam2,text,nameme);
  675.     i=(long *)text;
  676. if((blok[1]== -20000)&&(fpbns(nam1)==fighting))
  677. {
  678. in_fight=0;
  679. fighting= -1;
  680. }
  681.         if(blok[1]<-10099)
  682.         {
  683.                new1rcv(isme,blok[0],nam1,nam2,blok[1],text);
  684.                return;
  685.            }
  686.     switch(blok[1])
  687.        {
  688.        case -9900:
  689.           setpvis(i[0],i[1]);break;
  690.        case -666:
  691.           bprintf("Something Very Evil Has Just Happened...\n");
  692.           loseme();
  693.           crapup("Bye Bye Cruel World....");
  694.        case -599:if(isme)
  695.         {
  696.            sscanf(text,"%d.%d.%d.",&my_lev,&my_sco,&my_str);
  697.            calibme();
  698.            }
  699.            break;
  700.        case -750:
  701.           if(isme){if(fpbns(nam2)!= -1) loseme();
  702.              closeworld();
  703.              printf("***HALT\n");
  704.              exit(0);
  705.              }
  706.        case -400:
  707.           if(isme) snoopd= -1;
  708.           break;
  709.        case -401:
  710.           if(isme)
  711.              {
  712.              snoopd=fpbns(nam2);
  713.              }
  714.           break;
  715.        case -10000:
  716.           if((isme!=1)&&(blok[0]==curch)) {
  717.              bprintf("%s",text);
  718.              }
  719.           break;
  720.        case -10030:
  721.           wthrrcv(blok[0]);break;
  722.        case -10021:
  723.           if(curch==blok[0]){
  724.              if(isme==1)
  725.                 {
  726.                 rdes=1;
  727.                 vdes=i[0];
  728.                 bloodrcv((long *)text,isme);
  729.                 }
  730.              }
  731.           break;
  732.        case -10020:
  733.           if(isme==1)
  734.              {
  735.              ades=blok[0];
  736.              if(my_lev<10)
  737.                 {
  738.                 }
  739.              else
  740.                 {bprintf("\001p%s\001 tried to summon you\n",nam2);
  741.                 return;
  742.                 }
  743.              tdes=1;
  744.              }
  745.           break;
  746.        case -10001:
  747.           if(isme==1)
  748.              {
  749.              else
  750.                 /* You are in the .... */
  751.                 {
  752.                 bprintf(" you between\nthe eyes\n");
  753.                 zapped=1;
  754.                 loseme();
  755.                 delpers(globme);
  756.                 sprintf(zb,"\001s%s\001%s has just died.\n\001",globme,globme);
  757.                 sendsys(globme,globme,-10000,curch,zb);
  758.                 bprintf("You have been utterly destroyed by %s\n",nam2);
  759.                 globme,nam2);
  760.                 sendsys(globme,globme,-10113,curch,zb);
  761.  
  762.                 crapup("Bye Bye.... Slain By Lightning");
  763.                 }
  764.              }
  765.           else
  766.           break;
  767.        case -10002:
  768.           if(isme!=1)
  769.              {
  770.              else
  771.                 bprintf("\001dA voice shouts '%s'\n\001",text);
  772.              }
  773.           break;
  774.        case -10003:
  775.           if(isme!=1){
  776.              }
  777.           break;
  778.        case -10004:
  779.           if(isme)bprintf("\001P%s\001\001d tells you '%s'\n\001",nam2,text);
  780.           break;
  781.        case -10010:
  782.           if(isme==1){loseme(); crapup("You have been kicked off");}
  783.           else
  784.              bprintf("%s has been kicked off\n",nam1);
  785.           break;
  786.        case -10011:
  787.           if(isme==1){bprintf("%s",text);}
  788.           break;
  789.           }
  790.     }
  791.  
  792. long me_ivct=0;
  793. long last_io_interrupt=0;
  794.  
  795. eorte()
  796. {
  797.     extern long mynum,me_ivct;
  798.     extern long me_drunk;
  799.     extern long ail_dumb;
  800.     extern long curch,tdes,rdes,vdes,ades;
  801.     extern long me_cal;
  802.     extern long wpnheld;
  803.     extern long my_str;
  804.     extern long i_setup;
  805.     extern long interrupt;
  806.     long ctm;
  807.     time(&ctm);
  808.     if(ctm-last_io_interrupt>2) interrupt=1;
  809.     if(interrupt) last_io_interrupt=ctm;
  810.     if(me_ivct) me_ivct--;
  811.     if(me_ivct==1) setpvis(mynum,0);
  812.     if(me_cal)
  813.        {
  814.        me_cal=0;
  815.        calibme();
  816.        }
  817.     if(tdes) dosumm(ades);
  818.     if(in_fight)
  819.     {
  820.         if(ploc(fighting)!=curch)
  821.         {
  822.             fighting= -1;
  823.             in_fight=0;
  824.         }
  825.         if(!strlen(pname(fighting)))
  826.         {
  827.             fighting= -1;
  828.             in_fight=0;
  829.         }
  830.         if(in_fight) {
  831.  
  832.         if(interrupt)     {
  833.                         in_fight=0;
  834.                         hitplayer(fighting,wpnheld);
  835.                 }
  836.         }
  837.     }
  838.     if((iswornby(18,mynum))||(randperc()<10))
  839.     {
  840.         my_str++;
  841.         if(i_setup) calibme();
  842.     }
  843.     forchk();
  844.     if(me_drunk>0)
  845.        {
  846.        me_drunk--;
  847.        if(!ail_dumb) gamecom("hiccup");
  848.        }
  849.        interrupt=0;
  850.     }
  851.  
  852. long me_drunk=0;
  853.  
  854. FILE *openroom(n,mod)
  855.     {
  856.     long  blob[64];
  857.     FILE *x;
  858.     sprintf(blob,"%s%d",ROOMS,-n);
  859.     x=fopen(blob,mod);
  860.     return(x);
  861.     }
  862.     
  863. long me_cal=0;
  864.  
  865.  rescom()
  866.     {
  867.     extern long my_lev;
  868.     extern long objinfo[],numobs;
  869.     FILE *b;
  870.     char dabk[32];
  871.     long i;
  872.     FILE *a;
  873.     if(my_lev<10)
  874.        {
  875.        bprintf("What ?\n");
  876.        return;
  877.        }
  878.     broad("Reset in progress....\nReset Completed....\n");
  879.     b=openlock(RESET_DATA,"r");
  880.     sec_read(b,objinfo,0,4*numobs);
  881.     fcloselock(b);
  882.     time(&i);
  883.     a=fopen(RESET_T,"w");
  884.     fprintf(a,"Last Reset At %s\n",ctime(&i));
  885.     fclose(a);
  886.     a=fopen(RESET_N,"w");
  887.     fprintf(a,"%ld\n",i);
  888.     fclose(a);
  889.     resetplayers();
  890.     }
  891.  
  892.  lightning()
  893.     {
  894.     extern long my_lev;
  895.     long  vic;
  896.     extern char wordbuf[];
  897.     extern char globme[];
  898.     extern long curch;
  899.     if(my_lev<10)
  900.        {
  901.           bprintf("Your spell fails.....\n");
  902.        return;
  903.        }
  904.     if(brkword()== -1)
  905.        {
  906.        bprintf("But who do you wish to blast into pieces....\n");
  907.        return;
  908.        }
  909.     vic=fpbn(wordbuf);
  910.     if(vic== -1)
  911.        {
  912.        bprintf("There is no one on with that name\n");
  913.        return;
  914.        }
  915.     sendsys(pname(vic),globme,-10001,ploc(vic),"");
  916.     syslog("%s zapped %s",globme,pname(vic));
  917.     if(vic>15)woundmn(vic,10000); /* DIE */
  918.     broad("\001dYou hear an ominous clap of thunder in the distance\n\001");
  919.     }
  920.  eatcom()
  921.     {
  922. long b;
  923. extern char wordbuf[];
  924. extern long curch;
  925. extern long mynum;
  926. extern long curch;
  927. extern long my_str;
  928.       if(brkword()== -1)
  929.        {
  930.        bprintf("What\n");
  931.        return;
  932.        }
  933.  
  934. if((curch== -609)&&(!strcmp(wordbuf,"water"))) strcpy(wordbuf,"spring");
  935. if(!strcmp(wordbuf,"from")) brkword();
  936. b=fobna(wordbuf);
  937. if(b== -1)
  938.        {
  939.        bprintf("There isn't one of those here\n");
  940.        return;
  941.        }
  942.  
  943.     switch(b)
  944.        {
  945. case 11:bprintf("You feel funny, and then pass out\n");
  946. bprintf("You wake up elsewhere....\n");
  947. teletrap(-1076);
  948. break;
  949. case 75:bprintf("very refreshing\n");break;
  950. case 175:if(my_lev<3)
  951.     {
  952.         my_sco+=40;
  953.         calibme();
  954.         bprintf("You feel a wave of energy sweeping through you.\n");
  955.         break;
  956.     }
  957.     else
  958.     {
  959.         bprintf("Faintly magical by the taste.\n");
  960.         if(my_str<40) my_str+=2;
  961.         calibme();
  962.     }
  963.     break;
  964.        default:
  965. if(otstbit(b,6))
  966. {
  967. destroy(b);
  968. bprintf("Ok....\n");
  969. my_str+=12;
  970. calibme();
  971. }
  972. else
  973.           bprintf("Thats sure not the latest in health food....\n");
  974.           break;
  975.           }
  976.     }
  977.  
  978.  calibme()
  979.     {
  980.     /* Routine to correct me in user file */
  981.     long  a;
  982.     extern long mynum,my_sco,my_lev,my_str,my_sex,wpnheld;
  983.     extern char globme[];
  984.     long  b;
  985.     char *sp[128];
  986.     extern long i_setup;
  987.     if(!i_setup) return;
  988.     b=levelof(my_sco);
  989.     if(b!=my_lev)
  990.        {
  991.        my_lev=b;
  992.        bprintf("You are now %s ",globme);
  993.        syslog("%s to level %d",globme,b);
  994.        disle3(b,my_sex);
  995.        sprintf(sp,"\001p%s\001 is now level %d\n",globme,my_lev);
  996.        sendsys(globme,globme,-10113,ploc(mynum),sp);
  997.        if(b==10) bprintf("\001f%s\001",GWIZ);
  998.        }
  999.     setplev(mynum,my_lev);
  1000.     if(my_str>(30+10*my_lev)) my_str=30+10*my_lev;
  1001.     setpstr(mynum,my_str);
  1002.     setpsex(mynum,my_sex);
  1003.     setpwpn(mynum,wpnheld);
  1004.     }
  1005.  
  1006.  levelof(score)
  1007.     {
  1008.     extern long my_lev;
  1009.     score=score/2;  /* Scaling factor */
  1010.     if(my_lev>10) return(my_lev);
  1011.     if(score<500) return(1);
  1012.     if(score<1000) return(2);
  1013.     if(score<3000) return(3);
  1014.     if(score<6000) return(4);
  1015.     if(score<10000) return(5);
  1016.     if(score<20000) return(6);
  1017.     if(score<32000) return(7);
  1018.     if(score<44000) return(8);
  1019.     if(score<70000) return(9);
  1020.     return(10);
  1021.     }
  1022.  
  1023.  playcom()
  1024.     {
  1025.     extern char wordbuf[];
  1026.     extern long curch;
  1027.     extern long mynum;
  1028.     long  a,b;
  1029.     if(brkword()== -1)
  1030.        {
  1031.        bprintf("Play what ?\n");
  1032.        return;
  1033.        }
  1034.     a=fobna(wordbuf);
  1035.     if(a== -1)
  1036.        {
  1037.        bprintf("That isn't here\n");
  1038.        return;
  1039.        }
  1040.     if(!isavl(a))
  1041.        {
  1042.        bprintf("That isn't here\n");
  1043.        return;
  1044.        }
  1045.     }
  1046.  getreinput(blob)
  1047.     {
  1048.     extern long stp;
  1049.     extern char strbuf[];
  1050.     strcpy(blob,"");
  1051.     while(strbuf[stp]==' ') stp++;
  1052.     while(strbuf[stp]) addchar(blob,strbuf[stp++]);
  1053.     }
  1054.  shoutcom()
  1055.     {
  1056.     extern long curch,my_lev;
  1057.     extern char globme[];
  1058.     auto char blob[200];
  1059.         if(chkdumb()) return;
  1060.     getreinput(blob);
  1061.         if(my_lev>9) sendsys(globme,globme,-10104,curch,blob);
  1062.     else
  1063.        sendsys(globme,globme,-10002,curch,blob);
  1064.     bprintf("Ok\n");
  1065.     }
  1066.  
  1067.  saycom()
  1068.     {
  1069.     extern long curch;
  1070.     extern char globme[];
  1071.     auto char blob[200];
  1072.     if(chkdumb()) return;
  1073.     getreinput(blob);
  1074.     sendsys(globme,globme,-10003,curch,blob);
  1075.     bprintf("You say '%s'\n",blob);
  1076.     }
  1077.  tellcom()
  1078.     {
  1079.     extern long curch;
  1080.     extern char wordbuf[],globme[];
  1081.     char blob[200];
  1082.     long  a,b;
  1083.     if(chkdumb()) return;
  1084.     if(brkword()== -1)
  1085.        {
  1086.        bprintf("Tell who ?\n");
  1087.        return;
  1088.        }
  1089.     b=fpbn(wordbuf);
  1090.     if(b== -1)
  1091.        {
  1092.        bprintf("No one with that name is playing\n");
  1093.        return;
  1094.        }
  1095.     getreinput(blob);
  1096.     sendsys(pname(b),globme,-10004,curch,blob);
  1097.  
  1098.     }
  1099.  scorecom()
  1100.     {
  1101.     extern long my_str,my_lev,my_sco;
  1102.     extern long my_sex;
  1103.     extern char globme[];
  1104.     disle3(my_lev,my_sex);
  1105.     }
  1106.  exorcom()
  1107.     {
  1108.     long  x,a;
  1109.     extern long curch;
  1110.     extern long my_lev;
  1111.     extern char globme[];
  1112.     extern char wordbuf[];
  1113.     if(my_lev<10)
  1114.        {
  1115.        bprintf("No chance....\n");
  1116.        return;
  1117.        }
  1118.     if(brkword()== -1)
  1119.        {
  1120.        bprintf("Exorcise who ?\n");
  1121.        return;
  1122.        }
  1123.     x=fpbn(wordbuf);
  1124.     if(x== -1)
  1125.        {
  1126.        bprintf("They aren't playing\n");
  1127.        return;
  1128.        }
  1129.        if(ptstflg(x,1))
  1130.        {
  1131.            bprintf("You can't exorcise them, they dont want to be exorcised\n");
  1132.            return;
  1133.            }
  1134.     syslog("%s exorcised %s",globme,pname(x));
  1135.     dumpstuff(x,ploc(x));
  1136.     sendsys(pname(x),globme,-10010,curch,"");
  1137.     pname(x)[0]=0;
  1138.     }
  1139.  givecom()
  1140.     {
  1141.     auto long  a,b;
  1142.     auto long  c,d;
  1143.     extern char wordbuf[];
  1144.     if(brkword()== -1)
  1145.        {
  1146.        bprintf("Give what to who ?\n");
  1147.        return;
  1148.        }
  1149.     if(fpbn(wordbuf)!= -1) goto obfrst;
  1150.     a=fobna(wordbuf);
  1151.     if(a== -1)
  1152.        {
  1153.        bprintf("You aren't carrying that\n");
  1154.        return(0);
  1155.        }
  1156.     /* a = item giving */
  1157.     if(brkword()== -1)
  1158.        {
  1159.        bprintf("But to who ?\n");
  1160.        return;
  1161.        }
  1162.     if(!strcmp(wordbuf,"to"))
  1163.        {
  1164.        if(brkword()== -1)
  1165.           {
  1166.           bprintf("But to who ?\n");
  1167.           return;
  1168.           }
  1169.        }
  1170.     c=fpbn(wordbuf);
  1171.     if(c== -1)
  1172.        {
  1173.        bprintf("I don't know who %s is\n",wordbuf);
  1174.  
  1175.        return;
  1176.        }
  1177.     dogive(a,c);
  1178.     return;
  1179.     obfrst:/* a=player */
  1180.     a=fpbn(wordbuf);
  1181.     if(a== -1)
  1182.        {
  1183.        bprintf("Who is %s\n",wordbuf);
  1184.        return;
  1185.        }
  1186.     if(brkword()== -1)
  1187.        {
  1188.        bprintf("Give them what ?\n");
  1189.        return;
  1190.        }
  1191.     c=fobna(wordbuf);
  1192.     if(c== -1)
  1193.        {
  1194.        bprintf("You are not carrying that\n");
  1195.        return;
  1196.        }
  1197.     dogive(c,a);
  1198.     }
  1199.  
  1200.  dogive(ob,pl)
  1201.     {
  1202.     long  x;
  1203.     auto z[32];
  1204.     extern char globme[];
  1205.     extern long my_lev,curch;
  1206.     extern long mynum;
  1207.     if((my_lev<10)&&(ploc(pl)!=curch))
  1208.        {
  1209.        bprintf("They are not here\n");
  1210.        return;
  1211.        }
  1212.     if(!iscarrby(ob,mynum))
  1213.        {
  1214.        bprintf("You are not carrying that\n");
  1215.        }
  1216.     if(!cancarry(pl))
  1217.        {
  1218.        bprintf("They can't carry that\n");
  1219.        return;
  1220.        }
  1221. if((my_lev<10)&&(ob==32))
  1222. {
  1223. bprintf("It doesn't wish to be given away.....\n");
  1224. return;
  1225. }
  1226.     setoloc(ob,pl,1);
  1227.     sprintf(z,"\001p%s\001 gives you the %s\n",globme,oname(ob));
  1228.     sendsys(pname(pl),globme,-10011,curch,z);
  1229.     return;
  1230.     }
  1231.  stealcom()
  1232.     {
  1233.     extern long mynum;
  1234.     extern long curch,my_lev;
  1235.     extern char wordbuf[];
  1236.     long  a,b;
  1237.     long  c,d;
  1238.     char x[128];
  1239.     long e,f;
  1240.     extern char globme[];
  1241.     char tb[128];
  1242.     if(brkword()== -1)
  1243.        {
  1244.        bprintf("Steal what from who ?\n");
  1245.        return;
  1246.        }
  1247.     strcpy(x,wordbuf);
  1248.     if(brkword()== -1)
  1249.        {
  1250.        bprintf("From who ?\n");
  1251.        return;
  1252.        }
  1253.     if(!strcmp(wordbuf,"from"))
  1254.        {
  1255.        if(brkword()== -1)
  1256.           {
  1257.           bprintf("From who ?\n");
  1258.           return;
  1259.           }
  1260.        }
  1261.     c=fpbn(wordbuf);
  1262.     if(c== -1)
  1263.        {
  1264.        bprintf("Who is that ?\n");
  1265.        return;
  1266.        }
  1267.     a=fobncb(x,c);
  1268.     if(a== -1)
  1269.        {
  1270.        bprintf("They are not carrying that\n");
  1271.        return;
  1272.        }
  1273.     if((my_lev<10)&&(ploc(c)!=curch))
  1274.        {
  1275.        bprintf("But they aren't here\n");
  1276.        return;
  1277.        }
  1278.     if(ocarrf(a)==2)
  1279.        {
  1280.        bprintf("They are wearing that\n");
  1281.        return;
  1282.        }
  1283.     if(pwpn(c)==a)
  1284.        {
  1285.        bprintf("They have that firmly to hand .. for KILLING people with\n");
  1286.            return;
  1287.        }
  1288.     if(!cancarry(mynum))
  1289.        {
  1290.        bprintf("You can't carry any more\n");
  1291.        return;
  1292.        }
  1293.     time(&f);
  1294.     srand(f);
  1295.     f=randperc();
  1296.     e=10+my_lev-plev(c);
  1297.     e*=5;
  1298.     if(f<e)
  1299.        {
  1300.        sprintf(tb,"\001p%s\001 steals the %s from you !\n",globme,oname(a));
  1301.        if(f&1){
  1302.             sendsys(pname(c),globme,-10011,curch,tb);
  1303.             if(c>15) woundmn(c,0);
  1304.            }
  1305.        setoloc(a,mynum,1);
  1306.        return;
  1307.        }
  1308.     else
  1309.        {
  1310.        bprintf("Your attempt fails\n");
  1311.        return;
  1312.        }
  1313.     }
  1314.  dosumm(loc)
  1315.     {
  1316.     char ms[128];
  1317.     extern long curch;
  1318.     extern char globme[];
  1319.     sprintf(ms,"\001s%s\001%s vanishes in a puff of smoke\n\001",globme,globme);
  1320.     sendsys(globme,globme,-10000,curch,ms);
  1321.     sprintf(ms,"\001s%s\001%s appears in a puff of smoke\n\001",globme,globme);
  1322.     dumpitems();
  1323.     curch=loc;
  1324.     sendsys(globme,globme,-10000,curch,ms);
  1325.     trapch(curch);
  1326.     }
  1327.  tsscom()
  1328.     {
  1329.     char s[128];
  1330.     extern long my_lev;
  1331.     if(my_lev<10000)
  1332.        {
  1333.        bprintf("I don't know that verb\n");
  1334.        return;
  1335.        }
  1336.     getreinput(s);
  1337.     closeworld();
  1338.     keysetback();
  1339.     if(getuid()==geteuid()) system(s);
  1340.     else bprintf("Not permitted on this ID\n");
  1341.     keysetup();
  1342.     }
  1343.  rmeditcom()
  1344.     {
  1345.     extern long my_lev;
  1346.     extern long cms;
  1347.     extern long mynum;
  1348.     char ms[128];
  1349.     extern char globme[];
  1350.     if(!ptstflg(mynum,3))
  1351.        {
  1352.        bprintf("Dum de dum.....\n");
  1353.        return;
  1354.        }
  1355.       
  1356.     sprintf(ms,"\001s%s\001%s fades out of reality\n\001",globme,globme);
  1357.     sendsys(globme,globme,-10113,0,ms); /* Info */
  1358.     cms= -2;/* CODE NUMBER */
  1359.     update(globme);
  1360.     pbfr();
  1361.     closeworld();
  1362.     if(chdir(ROOMS)==-1) bprintf("Warning: Can't CHDIR\n");
  1363.     sprintf(ms,"/cs_d/aberstudent/yr2/hy8/.sunbin/emacs");
  1364.     system(ms);
  1365.     cms= -1;
  1366.     openworld();
  1367.     if(fpbns(globme)== -1)
  1368.        {
  1369.        loseme();
  1370.        crapup("You have been kicked off");
  1371.        }
  1372.     sprintf(ms,"\001s%s\001%s re-enters the normal universe\n\001",globme,globme);
  1373.     sendsys(globme,globme,-10113,0,ms);
  1374.     rte();
  1375.     }
  1376.  u_system()
  1377.     {
  1378.     extern long my_lev;
  1379.     extern char globme[];
  1380.     extern long cms;
  1381.     char x[128];
  1382.     if(my_lev<10)
  1383.        {
  1384.        bprintf("You'll have to leave the game first!\n");
  1385.        return;
  1386.        }
  1387.     cms= -2;
  1388.     update(globme);
  1389.     sendsys(globme,globme,-10113,0,x);
  1390.     closeworld();
  1391.     system("/cs_d/aberstudent/yr2/iy7/bt");
  1392.     openworld();
  1393.     cms= -1;
  1394.     if(fpbns(globme)== -1)
  1395.        {
  1396.        loseme();
  1397.        crapup("You have been kicked off");
  1398.        }
  1399.     rte();
  1400.     openworld();
  1401.     sendsys(globme,globme,-10113,0,x);
  1402.     }
  1403.  inumcom()
  1404.     {
  1405.     extern long my_lev;
  1406.     extern char wordbuf[];
  1407.     if(my_lev<10000)
  1408.        {bprintf("Huh ?\n");
  1409.        return;}
  1410.     if(brkword()== -1)
  1411.        {
  1412.        bprintf("What...\n");
  1413.        return;
  1414.        }
  1415.     bprintf("Item Number is %d\n",fobn(wordbuf));
  1416.     }
  1417.  updcom()
  1418.     {
  1419.     extern long my_lev;
  1420.     char x[128];
  1421.     extern char globme[];
  1422.     if(my_lev<10)
  1423.        {
  1424.        bprintf("Hmmm... you can't do that one\n");
  1425.        return;
  1426.        }
  1427.     loseme();
  1428.     sprintf(x,"[ %s has updated ]\n",globme);
  1429.     sendsys(globme,globme,-10113,0,x);
  1430.     closeworld();
  1431.     sprintf(x,"%s",globme);
  1432.     execl(EXE,
  1433.     "   --{----- ABERMUD -----}--   ",x,0);  /* GOTOSS eek! */
  1434.     bprintf("Eeek! someones pinched the executable!\n");
  1435.     }
  1436.  
  1437.  becom()
  1438.     {
  1439.     extern char globme[];
  1440.     extern long my_lev;
  1441.     char x[128];
  1442.     char x2[128];
  1443.     if(my_lev<10)
  1444.        {
  1445.        bprintf("Become what ?\n");
  1446.        return;
  1447.        }
  1448.     getreinput(x2);
  1449.     if(!strlen(x2))
  1450.        {
  1451.        bprintf("To become what ?, inebriated ?\n");
  1452.        return;
  1453.        }
  1454.     sprintf(x,"%s has quit, via BECOME\n",globme);
  1455.     sendsys("","",-10113,0,x);
  1456.     keysetback();
  1457.     loseme();
  1458.     closeworld();
  1459.     sprintf(x,"-n%s",x2);
  1460.     execl(EXE2,"   --}----- ABERMUD ------   ",x,0);    /* GOTOSS eek! */
  1461.     bprintf("Eek! someone's just run off with mud!!!!\n");
  1462.     }
  1463.  systat()
  1464.     {
  1465.     extern long my_lev;
  1466.     if(my_lev<10000000)
  1467.        {
  1468.        bprintf("What do you think this is a DEC 10 ?\n");
  1469.        return;
  1470.        }
  1471.     }
  1472.  convcom()
  1473.     {
  1474.     extern long convflg;
  1475.     convflg=1;
  1476.     bprintf("Type '**' on a line of its own to exit converse mode\n");
  1477.     }
  1478.  shellcom()
  1479.     {
  1480.     extern long convflg,my_lev;
  1481.     if(my_lev<10000)
  1482.        {
  1483.        bprintf("There is nothing here you can shell\n");
  1484.        return;
  1485.        }
  1486.     convflg=2;
  1487.     bprintf("Type ** on its own on a new line to exit shell\n");
  1488.     }
  1489.  rawcom()
  1490.     {
  1491.     extern long my_lev;
  1492.     char x[100],y[100];
  1493.     if(my_lev<10000)
  1494.        {
  1495.        bprintf("I don't know that verb\n");
  1496.        return;
  1497.        }
  1498.     getreinput(x);
  1499.     if((my_lev==10033)&&(x[0]=='!'))
  1500.     {
  1501.           broad(x+1);
  1502.           return;
  1503.     }
  1504.     else
  1505.     {
  1506.     sprintf(y,"%s%s%s","** SYSTEM : ",x,"\n\007\007");
  1507.     broad(y);
  1508.     }
  1509. }
  1510.  
  1511.  rollcom()
  1512.     {
  1513.     auto long  a,b;
  1514.     b=ohereandget(&a);
  1515.     if(b== -1) return;
  1516.     switch(a)
  1517.        {
  1518.            case 122:;
  1519.            case 123:gamecom("push pillar");break;
  1520.        default:
  1521.           bprintf("You can't roll that\n");
  1522.           }
  1523.     }
  1524.     
  1525. long brmode=0;
  1526.  
  1527.  debugcom()
  1528.     {
  1529.     extern long my_lev;
  1530.     if(my_lev<10000)
  1531.        {
  1532.        bprintf("I don't know that verb\n");
  1533.        return;
  1534.        }
  1535.     debug2();
  1536.     }
  1537.  
  1538. bugcom()
  1539. {
  1540.     char x[120];
  1541.     extern char globme[];
  1542.     getreinput(x);
  1543.     syslog("Bug by %s : %s",globme,x);
  1544. }
  1545.  
  1546. typocom()
  1547. {
  1548.     char x[120],y[32];
  1549.     extern char globme[];
  1550.     extern long curch;
  1551.     sprintf(y,"%s in %d",globme,curch);
  1552.     getreinput(x);
  1553.     syslog("Typo by %s : %s",y,x);
  1554. }
  1555.  
  1556. look_cmd()
  1557. {
  1558.     int a;
  1559.     long brhold;
  1560.     extern long brmode;
  1561.     extern char wordbuf[];
  1562.     if(brkword()==-1)
  1563.     {
  1564.           brhold=brmode;
  1565.           brmode=0;
  1566.           lookin(curch);
  1567.           brmode=brhold;
  1568.           return;
  1569.         }
  1570.         if(strcmp(wordbuf,"at")==0)
  1571.         {
  1572.             examcom();
  1573.             return;
  1574.         }
  1575.         if((strcmp(wordbuf,"in"))&&(strcmp(wordbuf,"into")))
  1576.         {
  1577.             return;
  1578.         }
  1579.         if(brkword()==-1)
  1580.         {
  1581.             bprintf("In what ?\n");
  1582.             return;
  1583.         }
  1584.         a=fobna(wordbuf);
  1585.     if(a==-1)
  1586.     {
  1587.         bprintf("What ?\n");
  1588.         return;
  1589.     }
  1590.     if(!otstbit(a,14))
  1591.     {
  1592.         bprintf("That isn't a container\n");
  1593.         return;
  1594.     }
  1595.     if((otstbit(a,2))&&(state(a)!=0))
  1596.     {
  1597.         bprintf("It's closed!\n");
  1598.         return;
  1599.     }
  1600.     bprintf("The %s contains:\n",oname(a));
  1601.     aobjsat(a,3);
  1602. }
  1603.     
  1604.  
  1605. set_ms(x)
  1606. char *x;
  1607. {
  1608.     extern long my_lev;
  1609.     if((my_lev<10)&&(strcmp(globme,"Lorry")))
  1610.     {
  1611.         bprintf("No way !\n");
  1612.     }
  1613.     else
  1614.     {
  1615.         getreinput(x);
  1616.     }
  1617.     return;
  1618. }
  1619.  
  1620. setmincom()
  1621. {
  1622.     extern char min_ms[];
  1623.     set_ms(min_ms);
  1624. }
  1625. setincom()
  1626. {
  1627.     extern char min_ms[];
  1628.     set_ms(in_ms);
  1629. }
  1630. setoutcom()
  1631. {
  1632.     extern char out_ms[];
  1633.     set_ms(out_ms);
  1634. }
  1635. setmoutcom()
  1636. {
  1637.     extern char mout_ms[];
  1638.     set_ms(mout_ms);
  1639. }
  1640.  
  1641. setherecom()
  1642. {
  1643.     extern char here_ms[];
  1644.     set_ms(here_ms);
  1645. }
  1646.  
  1647.  
  1648. digcom()
  1649. {
  1650.     if((oloc(186)==curch)&&(isdest(186)))
  1651.     {
  1652.         bprintf("You uncover a stone slab!\n");
  1653.         ocreate(186);
  1654.         return;
  1655.     }
  1656.     if((curch!=-172)&&(curch!=-192))
  1657.     {
  1658.         bprintf("You find nothing.\n");
  1659.         return;
  1660.     }
  1661.     if(state(176)==0)
  1662.     {
  1663.         bprintf("You widen the hole, but with little effect.\n");
  1664.         return;
  1665.     }
  1666.     setstate(176,0);
  1667.     bprintf("You rapidly dig through to another passage.\n");
  1668. }
  1669.  
  1670. emptycom()
  1671. {
  1672.     long a,b;
  1673.     extern long numobs;
  1674.     char x[81];
  1675.     b=ohereandget(&a);
  1676.     if(b==-1) return;
  1677.     b=0;
  1678.     while(b<numobs)
  1679.     {
  1680.         if(iscontin(b,a))
  1681.         {
  1682.             setoloc(b,mynum,1);
  1683.             bprintf("You empty the %s from the %s\n",oname(b),oname(a));
  1684.             sprintf(x,"drop %s",oname(b));
  1685.             gamecom(x);
  1686.             pbfr();
  1687.             openworld();
  1688.         }
  1689.         b++;
  1690.     }
  1691. }
  1692.  
  1693.